Written as a tutorial on how to think about, organise and implement programs in scientific computing, this book achieves its goal through an eclectic and wide-ranging collection of projects. Each project presents a problem and an algorithm for solving it, and the reader is guided through the process[...]